﻿using System;
using System.Collections.Generic;

using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data.SqlClient;//引用空间

namespace TemControl
{
  public static  class SqlServerHelp
    {
        //格式："server=数据库的地址及实例;uid=数据库账号;
        //       pwd=数据库密码;database=数据库名"

        /// <summary>
        /// 定义连接字符串
        /// </summary>
        public static string ConStr { get; set; }
            = "server=.;uid=sa;pwd=12345678;database=TemDataPro";
        /// <summary>
        /// 增删改
        /// </summary>
        /// <param name="sql">要执行的SQL语句</param>
        /// <returns></returns>
        public static int InsDelUpdate(string sql)
        {
            //1.创建连接对象 
            SqlConnection sqlConnection = new SqlConnection(ConStr);
            //2.创建命令对象
            SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection);
            try
            {
                //3.尝试打开数据库
                sqlConnection.Open();
                //4.尝试执行Sql命令 会返回受影响的行数 
                return sqlCommand.ExecuteNonQuery();
            }
            catch (Exception)
            {
                //方案一：如果有异常，往上抛异常，让调用者处理
                throw;
                //方案二：如果你不想让调用者处理，那么久不要throw,
                //并且在这里写日志记录 什么时间 发生了什么事
            }
            finally
            {
                //关闭连接
                sqlConnection.Close();
            }
        }
        /// <summary>
        /// 查询(返回读取流)
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static SqlDataReader GetReader(string sql)
        {
            //1.创建连接对象
            SqlConnection sqlConnection = new SqlConnection(ConStr);
            //2.创建sql命令
            SqlCommand sqlCommand = new SqlCommand(sql,sqlConnection);
            try
            {
                //3.尝试打开数据库
                sqlConnection.Open();
                //4.尝试执行Sql语句 执行完成后自动关闭连接资源
                return  sqlCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                sqlConnection.Close(); //出现异常关闭连接
                throw;
            }

        }
       
    }
}
